Restfulapi a question in the query list when I write less condition parameters get request / book / queryByNameAndAge / {name} / {age}
If the argument is more, is not to replace the post request is sent json, so that they and restful style does not match?
关于Swagger @ApiModel 返回内容注释不显示问题
封装的返回类MSG 加入泛型之后,还需要在你Controller返回的数据也加上泛型,不然还是展示不出来的
参考如下:https://blog.csdn.net/qq_32917699/article/details/81486060
package com.winner.es.controller;
import com.winner.es.model.Book;
import com.winner.es.model.Msg;
import com.winner.es.repository.BookRepository;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.apache.poi.ss.formula.functions.T;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.index.query.QueryStringQueryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Optional;
/**
* @ApiParam 注解,对单个参数的描述
*
* 关于 update_time del_flag 还有主键, 可以实现 实时的同步
* https://blog.csdn.net/yiyiholic/article/details/82352236
*
*
* restfulAPI的优点
* 不用费力的拼 getBook?id=1&name=2 使用PathVariable简单了很多 /book/detail/1001 1001直接作为请求参数 get请求就是查询
*
* @PathVariable可以用来映射URL中的占位符{xxx}到目标方法的参数中 带占位符的 URL 是 Spring3.0 新增的功能
*
* restful风格传入多个参数:
* @GetMapping("/{id}/{name}")
* 方法上是不区分先后顺序的 (@PathVariable("id") String id,@PathVariable("name") String name)
* post请求封装为一个json的对象
*
* @author wangxl
* @date 2019-08-12
*/
@RestController
@RequestMapping(value="/book")
public class EsBookController {
private static Logger log = LoggerFactory.getLogger(EsBookController.class);
@Autowired
private MessageSourceUtil messageSourceUtil;
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
@Autowired
private BookRepository bookRepository;
/**
* localhost:8888/book/messages/zh_cn
*
* @return
*/
@ApiOperation(value = "多语言测试接口")
@GetMapping("/messages/{lang}")
public String messages(@ApiParam(value = "语言类型", required = true) @PathVariable("lang") String lang) {
String message = messageSourceUtil.getMessage("ACCOUNT_IS_NULL", lang);
return message;
}
@ApiOperation(value = "新增一本书")
@PostMapping(name = "/")
public Msg addBook(@ApiParam(value = "应用DTO对象", required = true) @RequestBody Book book) {
bookRepository.save(book);//保存一个
return Msg.success();
}
@ApiOperation(value = "查询一本书")
@GetMapping("/{id}")
public Msg selectOne(@PathVariable("id") String id) {
Optional<Book> optionalBook = bookRepository.findById(id);
return Msg.success().add(optionalBook);
}
/**
* localhost:8888/book/{id} put请求 body中的json,id必须给传上
*
* @param book
* @return
*/
@ApiOperation(value = "修改一本书")
@PutMapping("/{id}")
public Msg updateBook(@ApiParam(value = "应用DTO对象()", required = true) @RequestBody Book book) {
bookRepository.save(book);//id相同的保存就是修改
return Msg.success();
}
/**
*
* 根据id删除一条记录 RESTful风格删除时传入多个id实现 1234,1235会通过@PathVariable注解封装到ids中
*
* @param id
* @return
*/
@ApiOperation(value = "根据主键id删除book信息")
@DeleteMapping("/{id}")
public Msg deleteBook(@PathVariable("id") String id) {
bookRepository.deleteById(id);
return Msg.success();
}
}