java - JAX-RS 和 AngularJS 之间的请求和响应

标签 java angularjs jax-rs

嗨,我有一个简单的休息服务:

    @POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Product createProduct(Product product) {
    if (!(productDao.findByName(product.getProductName()).isEmpty())) {
                //?????
    } else {
        productDao.create(product);
                //?????
    }
    return product;
}

当输入名称不正确并且方法 findByName 返回不为空时,我希望从我的其余服务方法返回仅 Angular 信息,例如“产品存在”。当方法 findByName 返回 null 并创建产品时,我希望将产品从我的方法返回到 Angular Controller 。怎么处理呢?返回实体和信息?

我在 Angular Controller 中如何处理它?当我返回实体时,下面的 Controller 工作正常,但我现在不知道为什么要处理信息“产品存在”而不是实体?

            $scope.addProduct = function (product) {
            $http.post(serviceURI + "products", product).success(function (data) {
                $scope.products.push(data);
                $('.success-message').fadeIn(1000).delay(5000).fadeOut(1000);
                $scope.message = "Product added";
            }).error(function (error) {
                $('.error-message').fadeIn(1000).delay(5000).fadeOut(1000);
                $scope.message = "Error";
            });
        }

从 JAX-RS 返回数据和信息并将其获取到 Angular Controller 的最佳实践是什么?

最佳答案

由于 RESTFul Web 服务使用 HTTP 词汇表,我建议根据操作结果返回不同的 HTTP 状态代码。

在第一种情况下,您可以抛出 WebApplicationException带有 4xx 系列的状态代码。

在第二种情况下,您可以使用默认状态代码(我认为在本例中为 200),或者通过返回 Response 来提供更具体的状态代码,例如 201(已创建)对象而不是直接产品。 例如。 Response.created可能对你有帮助。

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

关于java - JAX-RS 和 AngularJS 之间的请求和响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33735077/

相关文章:

javascript - 休假前确认指令

java - 如何在 Jersey GET 请求中将多个查询参数映射到 bean 的字段?

Java Restful Webservices - 一起发送响应和 Id

java - 端口 80 上的 Apache Web 服务器和 Apache Tomcat - 配置

java - Spring Boot thymeleaf 错误请求 400 而不是显示用户错误

java - 更改为Java 7版本后无法运行STS

有 promise 的 Javascript (Angularjs) websocket?

java - 验证 JsonWebToken 签名

angularjs - 如何在 Angular ui-grid 3.0 中获取行索引

java - Apache CXF JAX/RS 调用中的 URL 重写