2016-10-05 4 views
0

Play 1.x에는이 기능이있는 것으로 보이지만 2.x 설명서에서 예제를 찾을 수 없습니다. accepts 또는 content-type이 일치하지 않으면 415를 반환하도록 컨트롤러를 구성하는 방법이 있습니까? 이 같은 컨트롤러에서 수동으로 작업을 수행 할 수 있습니다재생을 사용하여 지원되지 않는 미디어 유형 415을 반환하는 방법은 무엇입니까?

// for GET, POST, PUT, etc. 
if (!request().accepts(Http.MimeTypes.JSON)) { 
    return new StatusHeader(UNSUPPORTED_MEDIA_TYPE); 
} 
// for POST, PUT, PATCH, etc. 
if (!request().contentType().orElse("").equals(Http.MimeTypes.JSON)) { 
    return new StatusHeader(UNSUPPORTED_MEDIA_TYPE); 
} 

하지만이 모든 컨트롤러 메소드에 코드 블록을 사용할 필요하여 w/o 프레임 워크에 의해 지원 될 필요가 뭔가가 발생한 것으로 보입니다.

답변

1

Play 2.5.x에서는이를 지원합니다.

나의 예가 Scala이지만, Java API로는 동일하게 구현할 수 있습니다. 아래의 문서를 확인하십시오. 클라이언트가 콘텐츠 형식에 대한 application/json 이외 보내려고 할 때 자동으로 당신을 위해 415 코드 결과를 구축 할 것입니다 플레이, 명시 적 parse.json 몸 파서를 사용하고 있는지 지정하여

// Scala example 

def accept = Action(parse.json) { implicit request => 
    render { 
     case Accepts.Json() => Ok(Json.parse("""{"message" : "Thanks for sending and accepting JSON"}""")) 
    } 
    } 

. 이 비트를 다루는 the Java examples을 참조하십시오.

case Accepts.Json()은 미디어 유형이 범위 내에 있는지 (즉, 사용 사례에서는 application/json) 테스트하는 추출기입니다. 클라이언트가 다른 미디어 유형을 보내는 경우 Play는 406 Not Acceptable을 생성한다고 생각합니다. the Java examples을 참조하십시오.

+0

감사합니다. 나는 문서를 보았지만 왠지 여전히 이것을 놓쳤다 고 맹세한다. – Eric

관련 문제