#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"}
分享到:
相关推荐
在 Scala 开发中,play-json 提供了与 Play Framework 集成的 JSON API,而 json4s 则是一个轻量级的 JSON 处理库,它提供了多种 JSON 库(如 Jackson、 spray-json 和 argonaut)的统一接口。这里的 "2.11" 表示这...
### Play2.0 for Java Developers #### 概述 Play2.0是一个现代的Web应用框架,它基于Java和Scala语言构建,旨在提供简洁、快速且可扩展的应用开发体验。对于Java开发者而言,Play2.0提供了一套完整的Java API,...
使用 Play-Framework 2.3.x 的 Scala Oauth 2.0 在这个示例应用程序中,我们使用Oauth2.0创建带有Play-Framework 2.3.x 、 ReactiveMongo-Extensions 、 Cake-Pattern和Scala-Oauth2-Provider 的API。 我们使用 ...
返回一个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"和"play-twenty-three.zip"代表了Scala生态系统中的两个关键部分:一个强大的函数式编程库和一个基于Play Framework的JSON处理项目。理解并熟练运用这些工具,可以帮助...
除了SpringMVC,Jackson也可与Spring Boot、Hibernate、Play Framework等其他Java框架无缝集成,提供JSON处理支持。 8. **安全性考虑**: 使用Jackson时,需要注意JSON注入(JSON Injection)的安全风险。Jackson...
Play Framework兼具生产力和性能,可轻松使用Java和Scala构建可扩展的Web应用程序。 Play具有“按点击刷新”工作流程和内置测试支持,对开发人员友好。 使用Play,由于无状态且无阻塞的体系结构,因此应用程序可以...
Swagger Play2模块 笔记 该分支( master )拥有支持的最新播放版本的最新版本(主要版本2.x )( 2.7 ); 分支保留了play 2.6版本(major.minor 1.6.x版)的swagger-play版本。... 正确的JSON Content-Lengt
Pac4J 是一个轻量级、可扩展的安全库,适用于多种 web 框架,如 Spring Security 和 Play Framework。JWT(JSON Web Token)则是一种安全地在各方之间传输信息的开放标准,常用于身份验证和授权。 在这个压缩包中,...
2. **服务器端集成**:它能够与多种服务器框架集成,如 Jersey、Spring MVC 和 Play Framework,帮助开发者快速构建符合 Swagger 规范的 REST 服务。 3. **文档生成**:通过解析源代码,Swagger Core 可以自动生成...
5. **集成**: Swagger Core支持多种Web开发框架,如Java的Spring MVC、Play Framework,甚至Node.js和Ruby on Rails。这样,无论你使用哪种技术栈,都可以轻松地将Swagger集成到你的项目中。 6. **测试**: Swagger ...
在这个项目中,可能使用了Spring Boot或Play Framework等Java后端框架,它们简化了Web应用的开发并提供了RESTful API支持,使得前端可以方便地获取和更新数据。 3. **Java前后端交互**:前后端交互通常通过HTTP或...
4. **Web应用框架**:为了构建用户界面和处理HTTP请求,项目可能使用了Spring MVC、Struts2或Play Framework等Java Web框架。这些框架简化了开发过程,提供了模型-视图-控制器(MVC)架构,有利于代码组织和测试。 ...
1. **Web应用框架**:Scala社区通常使用如Play Framework这样的高级Web框架来构建前端应用。Play Framework支持RESTful架构,使得与后端API的交互更为简单,同时提供了一套强大的模板引擎,用于生成HTML、XML或其他...
在前端领域,Scala可以通过例如Play Framework这样的框架来构建Web应用程序,它支持异步I/O和HTTP服务,适合构建现代、响应式的Web应用。 尽管这个项目是前端相关的,但使用Scala可能意味着它依赖于后端服务进行...
2. **Web框架**:为了提高开发效率和代码结构,开发者可能使用了Spring Boot或Play Framework这样的Java Web框架。这些框架提供了一整套工具和服务,如自动配置、RESTful API支持、模板引擎等,简化了后端开发。 3....
1. **服务器架构**:可能采用了Spring Boot或Play Framework等Java Web框架,它们能快速搭建后端服务,并提供了丰富的功能支持。 2. **数据库管理**:可能使用了MySQL、PostgreSQL或者MongoDB等数据库系统,用于...
3. **Java后端开发**:在Java后端,开发者可能使用Spring Boot或Play Framework等框架来构建API服务,这些框架提供了处理HTTP请求、路由、数据访问和事务管理等功能,使得开发高效且易于维护。 4. **RESTful API...
因此,我们可以假设这个API的实现基于Java的Web框架,如Spring Boot或Play Framework,这些框架提供了构建RESTful API的便利。 在文件名称列表中,我们看到"api-master",这可能是一个Git仓库的默认分支名,代表这...