我试图用Spring实现一个非常简单的REST。在GET请求中,我想做一个非常基本的音译。因此,请求者必须发送输入字符串和音译字符串。
这些参数应该传递给我的方法,该方法返回音译。答复应如下所示:
"input": ...
"transliterationrule": ...
"transliteration": ...
为此,我使用以下类创建了一个java spring引导项目:
进口com.ibm.icu.text.Transliterator;
公共类音译{
私有最终字符串输入;私有最终字符串transliterationRule;公共音译(字符串输入,字符串transliterationRule) { this.input =输入;this.transliterationRule = transliterationRule;}公共字符串transliterateString(){音译符音译=transliterationRule返回transliterator.transliterate(this.input);}公共字符串getInput(){返回输入;}公共字符串getTransliterationRule(){返回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()?如何添加方法结果来执行请求?
发布于 2020-12-22 13:43:21
更改控制器的方法以返回ResponseEntity并包装TransliterationResponse。TransliterationResponse是一个包含“输入”的dto:.“音译规则”:.“音译”:.
@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);
}
发布于 2020-12-22 13:49:58
创建一个包含所有响应值的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
}
更新控制器方法以返回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));
}
}
https://stackoverflow.com/questions/65409537
复制相似问题