`

Play framework 2.0 -Json处理

阅读更多

 

#JSON请求的处理和服务

 

1.处理Json请求

 

Json请求是使用有效Json数据作为Http请求的请求体的。它的Content-type头必须指定为"text/json"或者"application/json"MIME类型。

默认的,一个动作使用any content 体解析器,你可以把请求(响应)体以Json格式取回来。

 

public static index sayHello() {
	  JsonNode json = request().body().asJson();
	  if(json == null) {
	    return badRequest("Expecting Json data");
	  } else {
	    String name = json.findPath("name").getTextValue();
	    if(name == null) {
	      return badRequest("Missing parameter [name]");
	    } else {
	      return ok("Hello " + name);
	    }
	  }
	}
 

 

 

 

当然了,指定我们自己的BodyParser来让Play把内容体直接解析为Json是更好的方式:

@BodyParser.Of(Json.class)
	public static index sayHello() {
	  String name = json.findPath("name").getTextValue();
	  if(name == null) {
	    return badRequest("Missing parameter [name]");
	  } else {
	    return ok("Hello " + name);
	  }
	}
 

注:对于非Json的请求,400 Http响应会被自动返回。

 

你可以在命令行下用curl命令测试:

curl 
	  --header "Content-type: application/json" 
	  --request POST 
	  --data '{"name": "Guillaume"}' 
	  http://localhost:9000/sayHello
 

它返回:

HTTP/1.1 200 OK
	Content-Type: text/plain; charset=utf-8
	Content-Length: 15

	Hello Guillaume
 

 

2.Json响应的服务

 

在以前的例子中我们处理Json请求,但是返回一个"text/plain"的响应。现在我们来发送会一个有效的JsonHttp响应:

@BodyParser.Of(Json.class)
	public static index sayHello() {
	  ObjectNode result = Json.newObject();
	  String name = json.findPath("name").getTextValue();
	  if(name == null) {
	    result.put("status", "KO");
	    result.put("message", "Missing parameter [name]");
	    return badRequest(result);
	  } else {
	    result.put("status", "OK");
	    result.put("message", "Hello " + name);
	    return ok(result);
	  }
	}
 

现在它的响应是:

HTTP/1.1 200 OK
	Content-Type: application/json; charset=utf-8
	Content-Length: 43

	{"status":"OK","message":"Hello Guillaume"}
 

 

0
0
分享到:
评论

相关推荐

    play-json4s-jackson_2.11-0.3.0.zip

    在 Scala 开发中,play-json 提供了与 Play Framework 集成的 JSON API,而 json4s 则是一个轻量级的 JSON 处理库,它提供了多种 JSON 库(如 Jackson、 spray-json 和 argonaut)的统一接口。这里的 "2.11" 表示这...

    play2.0 for java developers.pdf

    ### Play2.0 for Java Developers #### 概述 Play2.0是一个现代的Web应用框架,它基于Java和Scala语言构建,旨在提供简洁、快速且可扩展的应用开发体验。对于Java开发者而言,Play2.0提供了一套完整的Java API,...

    play-framework-reactivemongo-oauth2.0:这是示例应用程序,我们在其中使用了 Play-Framework 2.3.x、Scala 2.11.x、ReactiveMongo-Extensions、Cake-Patter 和 Scala Oauth 2.0

    使用 Play-Framework 2.3.x 的 Scala Oauth 2.0 在这个示例应用程序中,我们使用Oauth2.0创建带有Play-Framework 2.3.x 、 ReactiveMongo-Extensions 、 Cake-Pattern和Scala-Oauth2-Provider 的API。 我们使用 ...

    play框架手册

    返回一个JSON字符串 - 33 - 返回一个XML字符串F - 34 - 返回二进制内容 - 34 - 作为附件下载文件 - 34 - 执行一个模板 - 35 - 跳转到其他URL - 36 - Action链 - 36 - 定制web编码 - 37 - 拦截器 - 38 - @Before - 38...

    scalaz-core_2.9.3-7.1.0-RC2.zip

    总结来说,"scalaz-core_2.9.3-7.1.0-RC2.zip"和"play-twenty-three.zip"代表了Scala生态系统中的两个关键部分:一个强大的函数式编程库和一个基于Play Framework的JSON处理项目。理解并熟练运用这些工具,可以帮助...

    jackson2.4.2.0.jar

    除了SpringMVC,Jackson也可与Spring Boot、Hibernate、Play Framework等其他Java框架无缝集成,提供JSON处理支持。 8. **安全性考虑**: 使用Jackson时,需要注意JSON注入(JSON Injection)的安全风险。Jackson...

    playframework:播放框架

    Play Framework兼具生产力和性能,可轻松使用Java和Scala构建可扩展的Web应用程序。 Play具有“按点击刷新”工作流程和内置测试支持,对开发人员友好。 使用Play,由于无状态且无阻塞的体系结构,因此应用程序可以...

    swagger-play

    Swagger Play2模块 笔记 该分支( master )拥有支持的最新播放版本的最新版本(主要版本2.x )( 2.7 ); 分支保留了play 2.6版本(major.minor 1.6.x版)的swagger-play版本。... 正确的JSON Content-Lengt

    shaun-master.zip

    Pac4J 是一个轻量级、可扩展的安全库,适用于多种 web 框架,如 Spring Security 和 Play Framework。JWT(JSON Web Token)则是一种安全地在各方之间传输信息的开放标准,常用于身份验证和授权。 在这个压缩包中,...

    swagger-core,用于生成swagger api规范的示例和服务器集成,该规范允许轻松访问restapi.zip

    2. **服务器端集成**:它能够与多种服务器框架集成,如 Jersey、Spring MVC 和 Play Framework,帮助开发者快速构建符合 Swagger 规范的 REST 服务。 3. **文档生成**:通过解析源代码,Swagger Core 可以自动生成...

    swagger-core-2.1.13.tar.gz

    5. **集成**: Swagger Core支持多种Web开发框架,如Java的Spring MVC、Play Framework,甚至Node.js和Ruby on Rails。这样,无论你使用哪种技术栈,都可以轻松地将Swagger集成到你的项目中。 6. **测试**: Swagger ...

    实时巴士带后端_java前后端交互.zip

    在这个项目中,可能使用了Spring Boot或Play Framework等Java后端框架,它们简化了Web应用的开发并提供了RESTful API支持,使得前端可以方便地获取和更新数据。 3. **Java前后端交互**:前后端交互通常通过HTTP或...

    java_barcode_trial.zip_project

    4. **Web应用框架**:为了构建用户界面和处理HTTP请求,项目可能使用了Spring MVC、Struts2或Play Framework等Java Web框架。这些框架简化了开发过程,提供了模型-视图-控制器(MVC)架构,有利于代码组织和测试。 ...

    vat-deferral-new-payment-scheme-frontend

    1. **Web应用框架**:Scala社区通常使用如Play Framework这样的高级Web框架来构建前端应用。Play Framework支持RESTful架构,使得与后端API的交互更为简单,同时提供了一套强大的模板引擎,用于生成HTML、XML或其他...

    cds-reimbursement-claim-frontend

    在前端领域,Scala可以通过例如Play Framework这样的框架来构建Web应用程序,它支持异步I/O和HTTP服务,适合构建现代、响应式的Web应用。 尽管这个项目是前端相关的,但使用Scala可能意味着它依赖于后端服务进行...

    todolist_java:待办事项列表应用程序的后端

    2. **Web框架**:为了提高开发效率和代码结构,开发者可能使用了Spring Boot或Play Framework这样的Java Web框架。这些框架提供了一整套工具和服务,如自动配置、RESTful API支持、模板引擎等,简化了后端开发。 3....

    mengtaiqi:檬太奇app及网站的后端

    1. **服务器架构**:可能采用了Spring Boot或Play Framework等Java Web框架,它们能快速搭建后端服务,并提供了丰富的功能支持。 2. **数据库管理**:可能使用了MySQL、PostgreSQL或者MongoDB等数据库系统,用于...

    mobile-notification-api:行动通知API

    3. **Java后端开发**:在Java后端,开发者可能使用Spring Boot或Play Framework等框架来构建API服务,这些框架提供了处理HTTP请求、路由、数据访问和事务管理等功能,使得开发高效且易于维护。 4. **RESTful API...

    api:每天大红包 · 服务端

    因此,我们可以假设这个API的实现基于Java的Web框架,如Spring Boot或Play Framework,这些框架提供了构建RESTful API的便利。 在文件名称列表中,我们看到"api-master",这可能是一个Git仓库的默认分支名,代表这...

Global site tag (gtag.js) - Google Analytics