[英]How to add logic to a GetMapping in Java REST API
I am trying to implement a very simple REST API with Spring Boot.我正在尝试使用 Spring 引导实现一个非常简单的 REST API。 In a GET Request I want to do a very basic transliteration.
在 GET 请求中,我想做一个非常基本的音译。 So the requestor will have to send an input string and transliteration string.
所以请求者必须发送一个输入字符串和音译字符串。
Those parameters should be passed to my method, that returns a transliteration.这些参数应该传递给我的方法,该方法返回一个音译。 The Response should look like this:
响应应如下所示:
"input": ...
"transliterationrule": ...
"transliteration": ...
To do so, I created a java spring boot project with the following classes:为此,我使用以下类创建了 java spring 引导项目:
Transliteration class音译class
import com.ibm.icu.text.Transliterator;
public class Transliteration {公共class音译{
private final String input; private final String transliterationRule; public Transliteration(String input, String transliterationRule) { this.input = input; this.transliterationRule = transliterationRule; } public String transliterateString(){ Transliterator transliterator = Transliterator.getInstance(this.transliterationRule); return transliterator.transliterate(this.input); } public String getInput(){ return input; } public String getTransliterationRule(){ return transliterationRule; }
} }
And controller class:和 controller class:
@RestController
public class TransliterationController {
@GetMapping("/transliteration")
public Transliteration transliteration(@RequestParam(value="input", required=false, defaultValue="TestString") String input,
@RequestParam(value="rule", required=false, defaultValue="Any-Latin") String transliterationRule) {
return new Transliteration(input, transliterationRule);
}
}
Can somebody please explain me, how I can actually pass these parameters to my method transliterateString()?有人可以解释一下,我如何将这些参数传递给我的方法 transliterateString()? And how can I add the method result do the request?
以及如何添加方法结果来完成请求?
Change your controller's method to return ResponseEntity and wrap a TransliterationResponse.更改控制器的方法以返回 ResponseEntity 并包装 TransliterationResponse。 TransliterationResponse is a dto holding "input": ... "transliterationrule": ... "transliteration": ...
TransliterationResponse 是一个 dto,它持有 "input": ... "transliterationrule": ... "transliteration": ...
@GetMapping("/transliteration")
public ResponseEntity<TransliterationResponse> transliteration(@RequestParam(value="input", required=false, defaultValue="TestString") String input,
@RequestParam(value="rule", required=false, defaultValue="Any-Latin") String transliterationRule) {
// do your business logic
//build the response dto
TransliterationResponse dto = new TransliterationResponse(input, transliterationrule, transliteration);
ResponseEntity.status(HttpStatus.OK).body(dto);
}
Create a DTO class to contain all response values:创建一个 DTO class 以包含所有响应值:
public class TransliterationDTO {
@JsonProperty("input")
private String input;
@JsonProperty("transliterationRule")
private String transliterationRule;
@JsonProperty("transliteration")
private String transliteration;
public TransliterationDTO() {
}
public TransliterationDTO(String input, String transliterationRule, String transliteration) {
this.input = input;
this.transliterationRule = transliterationRule;
this.transliteration = transliteration;
}
// Getters and Setters
}
Update your controller method to return a ResponseEntity:更新您的 controller 方法以返回 ResponseEntity:
@RestController
public class TransliterationController {
@GetMapping("/transliteration")
public ResponseEntity<TransliterationDTO> transliteration(@RequestParam(value="input", required=false, defaultValue="TestString") String input,
@RequestParam(value="rule", required=false, defaultValue="Any-Latin") String transliterationRule) {
Transliteration t = new Transliteration(input, transliterationRule);
return ResponseEntity.ok(new TransliterationDTO(t.getInput(), t.getTransliterationRule(), t.getTransliteration));
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.