如何在JavaRESTAPI中向GetMapping添加逻辑
我正在尝试用SpringBoot实现一个非常简单的RESTAPI。在GET请求中,我想做一个非常基本的音译。因此请求者必须发送一个输入字符串和音译字符串 这些参数应该传递给我的方法,该方法返回一个音译。响应应如下所示:如何在JavaRESTAPI中向GetMapping添加逻辑,java,rest,spring-mvc,Java,Rest,Spring Mvc,我正在尝试用SpringBoot实现一个非常简单的RESTAPI。在GET请求中,我想做一个非常基本的音译。因此请求者必须发送一个输入字符串和音译字符串 这些参数应该传递给我的方法,该方法返回一个音译。响应应如下所示: "input": ... "transliterationrule": ... "transliteration": ... 为此,我使用以下类创建了一个java spring引导项目: 音译类 import com
"input": ...
"transliterationrule": ...
"transliteration": ...
为此,我使用以下类创建了一个java spring引导项目:
import com.ibm.icu.text.Transliterator;
公共类音译{
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;
}
}
@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);
}
}
有人能给我解释一下,我如何将这些参数传递给我的方法transliterateString()?如何将方法结果添加到请求中?更改控制器的方法以返回ResponseEntity并包装一个音译响应。音译应答是一种dto保持 “输入”:。。。 “音译规则”:。。。 “音译”:
@GetMapping(“/音译”)
公共响应性音译(@RequestParam(value=“input”,required=false,defaultValue=“TestString”)字符串输入,
@RequestParam(value=“rule”,required=false,defaultValue=“Any拉丁文”)字符串音译规则){
//做你的商业逻辑
//构建响应dto
音译应答dto=新的音译应答(输入,音译规则,音译);
响应状态(HttpStatus.OK)。主体(dto);
}
更改控制器的方法以返回ResponseEntity并包装音译响应。音译应答是一种dto保持
“输入”:。。。
“音译规则”:。。。
“音译”:
@GetMapping(“/音译”)
公共响应性音译(@RequestParam(value=“input”,required=false,defaultValue=“TestString”)字符串输入,
@RequestParam(value=“rule”,required=false,defaultValue=“Any拉丁文”)字符串音译规则){
//做你的商业逻辑
//构建响应dto
音译应答dto=新的音译应答(输入,音译规则,音译);
响应状态(HttpStatus.OK)。主体(dto);
}
创建一个DTO类以包含所有响应值:
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
}
更新控制器方法以返回响应属性:
@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));
}
}
@RestController
公共类音译控制器{
@GetMapping(“/音译”)
公共响应性音译(@RequestParam(value=“input”,required=false,defaultValue=“TestString”)字符串输入,
@RequestParam(value=“rule”,required=false,defaultValue=“Any拉丁文”)字符串音译规则){
音译t=新的音译(输入,音译规则);
返回ResponseEntity.ok(新的音译dto(t.getInput(),t.getTranscriptionRule(),t.getTranscription));
}
}
创建一个DTO类以包含所有响应值:
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
}
更新控制器方法以返回响应属性:
@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));
}
}
@RestController
公共类音译控制器{
@GetMapping(“/音译”)
公共响应性音译(@RequestParam(value=“input”,required=false,defaultValue=“TestString”)字符串输入,
@RequestParam(value=“rule”,required=false,defaultValue=“Any拉丁文”)字符串音译规则){
音译t=新的音译(输入,音译规则);
返回ResponseEntity.ok(新的音译dto(t.getInput(),t.getTranscriptionRule(),t.getTranscription));
}
}
API方法(在控制器中)可能会返回字符串或其他数据对象,而不是包含业务逻辑的音译对象。一个好的开始是创建一个新类来保存输出数据(输入、规则、音译)。您可以让控制器方法返回该对象或其字符串序列化。您的API方法(在控制器中)可能应该返回字符串或其他数据对象,而不是包含业务逻辑的音译对象。一个好的开始是创建一个新类来保存输出数据(输入、规则、音译)。您可以让控制器方法返回该对象或其字符串序列化。谢谢!!我现在知道了谢谢!!我现在知道了,谢谢你!现在开始工作了,谢谢!它正在工作