RESTFUL — это стиль проектирования и разработки веб-приложений, основанный на протоколе HTTP, который может использовать формат XML или JSON для представления данных. RESTFUL подходит для сценариев, где мобильные интернет-провайдеры используют RESTFUL API как бизнес-интерфейсы для вызова ресурсов мобильной сети, включая действия типа добавления, изменения и удаления ресурсов.
<!-- springCloud主要用于jar包的版本控制 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
``` <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>${commons-lang3.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>${data-commons.version}</version>
</dependency>
``` <dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io.version}</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons-lang.version}</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>${commons-collections.version}</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${commons-beanutils.version}</version>
</dependency>```markdown
<!-- RESTful APIs swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency><dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
Сущность определена следующим образом:
public class User implements Serializable {
private static final long serialVersionUID = 1838417777538323571L;
// Первичный ключ
@NotNull(message = "Первичный ключ не может быть пустым", groups = Update.class)
private Long id;
// Имя пользователя
@NotNull(message = "Имя пользователя не может быть пустым")
private String userName;
// Пароль
@NotNull(message = "Пароль не может быть пустым")
private String password;
// Пол
@NotNull(message = "Пол не может быть пустым")
private String sex;
@interface Update {
}
}
Контроллер кода, BindingResult bindingResult должен быть указан в параметрах метода, иначе валидация не пройдет. Валидация логика обрабатывается через @FwValidate аспект.
/**
* Добавление пользователя
* @Author xuyisu
* @Date 2019/10/25
* @Param [user]
* @Return com.yisu.common.result.FwResult
*/
@PostMapping
@ApiOperation(value = "Создание пользователя")
@FwValidate
public FwResult createUser(@Valid @RequestBody User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return FwResult.failed();
}
FwResult userInfo = userService.createUser(user);
return userInfo;
}
/**
* Обновление пользователя
* @Author xuyisu
* @Date 2019/10/25
* @Param [user]
* @Return com.yisu.common.result.FwResult
*/
@PutMapping("/updateUser")
@ApiOperation(value = "Обновление пользователя")
@FwValidate
public FwResult updateUser(@Validated(User.Update.class) @RequestBody User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return FwResult.failed();
}
FwResult userInfo = userService.updateUser(user);
return userInfo;
}
```### 3. Конфигурация Swagger
```java
/**
* Страница API /swagger-ui.html
* @author xuyisu
* @date 2019-10-15
*/
```@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${swagger.enabled}")
private Boolean enabled;
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.enable(enabled)
.apiInfo(apiInfo())
.select()
.paths(Predicates.not(PathSelectors.regex("/error.*")))
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Документация интерфейсов")
.version("1.0")
.build();
}
}
В браузере введите http://localhost:8766/swagger-ui.html#
/**
* @ClassName UserControllerTest
* @Author xuyisu
* @Description Моделирование HTTP-тестирования
* @Date 2019/10/25
*/
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UserControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setup() {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
@Test
public void когдаПолучаемИнформациюОПользователеУспешно() throws Exception {
String result = mockMvc.perform(get("/user/1")
.contentType(MediaType.APPLICATION_JSON_UTF8))
.andExpect(status().isOk())
.andExpect(jsonPath("$.code").value(FwCommonConstants.SUCCESS))
.andReturn().getResponse().getContentAsString();
System.out.println(result);
}
//.......
//Детали см. в коде `com.yisu.mock.UserControllerTest`
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )