Custom media types rest (#939)
* Custom Media Types for REST * add test, add DTO, remove example of API versioning to make example simpler * client accept only that custom-media type * remove not needed new_line * leave custom media type on class level * do not need content type header * GET do not need content-Type * add liveTest for custom Content type * Merge branch 'master' of https://github.com/eugenp/tutorials into Custom_media_types_rest # Conflicts: # spring-rest/src/main/java/org/baeldung/web/controller/mediatypes/CustomMediaTypeController.java # spring-rest/src/main/java/org/baeldung/web/dto/BaeldungItem.java # spring-rest/src/test/java/org/baeldung/web/controller/mediatypes/CustomMediaTypeControllerTest.java
This commit is contained in:
parent
373f336b81
commit
0e163811ac
|
@ -8,10 +8,10 @@ import org.springframework.web.bind.annotation.ResponseBody;
|
|||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
@RestController
|
||||
@RequestMapping(value = "/", produces = "application/vnd.baeldung.api.v1+json", consumes = "application/vnd.baeldung.api.v1+json")
|
||||
@RequestMapping(value = "/", produces = "application/vnd.baeldung.api.v1+json")
|
||||
public class CustomMediaTypeController {
|
||||
|
||||
@RequestMapping(value = "/public/api/endpoint", produces = "application/vnd.baeldung.api.v1+json", consumes = "application/vnd.baeldung.api.v1+json")
|
||||
@RequestMapping(value = "/public/api/endpoint", produces = "application/vnd.baeldung.api.v1+json")
|
||||
public @ResponseBody ResponseEntity<BaeldungItem> getItem() {
|
||||
return new ResponseEntity<>(new BaeldungItem("itemId1"), HttpStatus.OK);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
package org.baeldung.web.controller.mediatypes;
|
||||
|
||||
import com.jayway.restassured.RestAssured;
|
||||
import com.jayway.restassured.response.Response;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
import org.springframework.test.context.support.AnnotationConfigContextLoader;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(classes = {TestConfig.class}, loader = AnnotationConfigContextLoader.class)
|
||||
public class CustomMediaTypeControllerLiveTest {
|
||||
private static final String URL_PREFIX = "http://localhost:8082/spring-rest";
|
||||
private static final String CUSTOM_CONTENT_TYPE = "application/vnd.baeldung.api.v1+json";
|
||||
|
||||
@Test
|
||||
public void getFor_customMediaType() {
|
||||
//given
|
||||
String url = URL_PREFIX + "/public/api/endpoint";
|
||||
|
||||
//when
|
||||
Response response = RestAssured.get(url);
|
||||
|
||||
//then
|
||||
assertEquals(200, response.getStatusCode());
|
||||
assertTrue(response.contentType().contains(CUSTOM_CONTENT_TYPE));
|
||||
|
||||
}
|
||||
}
|
|
@ -32,6 +32,6 @@ public class CustomMediaTypeControllerTest {
|
|||
|
||||
@Test
|
||||
public void shouldSendRequestForItem() throws Exception {
|
||||
mockMvc.perform(get("/public/api/endpoint").contentType("application/vnd.baeldung.api.v1+json").accept("application/vnd.baeldung.api.v1+json")).andExpect(status().isOk());
|
||||
mockMvc.perform(get("/public/api/endpoint").accept("application/vnd.baeldung.api.v1+json")).andExpect(status().isOk());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package org.baeldung.web.controller.mediatypes;
|
||||
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
|
||||
@Configuration
|
||||
@ComponentScan({ "org.baeldung.web" })
|
||||
public class TestConfig {
|
||||
|
||||
}
|
Loading…
Reference in New Issue