简体   繁体   English

用Java将JSON文件发布到我的REST服务

[英]Post json file to my REST service in java

I'm trying to post data from my Angular js form to be saved to the database using REST service using Java. 我正在尝试从Angular js表单中发布数据,以使用Java的REST服务将其保存到数据库。 below is my code for the rest 下面是我剩下的代码

@Stateless
@Path("driverprops")

public class DriverPropFacadeREST extends AbstractFacade<DriverProp> {
    @PersistenceContext(unitName = "com.mycompany_groupProjectBackend_war_1.0-SNAPSHOTPU")
    private EntityManager em;

public DriverPropFacadeREST() {
    super(DriverProp.class);
}

@POST
@Override
@Consumes({ "application/json"})
public void create(DriverProp entity) {
    super.create(entity);
}

hers is part of my driverprop class 她的是我的driverprop班的一部分

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlRootElement;



 @Entity
    @Table(name = "DriverProp")
    @XmlRootElement
    @NamedQueries({
        @NamedQuery(name = "DriverProp.findAll", query = "SELECT d FROM   `DriverProp d"),
        @NamedQuery(name = "DriverProp.findByDriverID", query = "SELECT d FROM DriverProp d WHERE d.driverID = :driverID"),
        @NamedQuery(name = "DriverProp.findByGear", query = "SELECT d FROM DriverProp d WHERE d.gear = :gear"),
        @NamedQuery(name = "DriverProp.findByChangeUpRPM", query = "SELECT d FROM DriverProp d WHERE d.changeUpRPM = :changeUpRPM"),
        @NamedQuery(name = "DriverProp.findByChangeDownRPM", query = "SELECT d FROM DriverProp d WHERE d.changeDownRPM = :changeDownRPM"),
        @NamedQuery(name = "DriverProp.findByPreferredMaxRPM", query = "SELECT d FROM DriverProp d WHERE d.preferredMaxRPM = :preferredMaxRPM"),
        @NamedQuery(name = "DriverProp.findByPreferredMinRPM", query = "SELECT d FROM DriverProp d WHERE d.preferredMinRPM = :preferredMinRPM"),
        @NamedQuery(name = "DriverProp.findByDecisionTime", query = "SELECT d FROM DriverProp d WHERE d.decisionTime = :decisionTime"),
        @NamedQuery(name = "DriverProp.findByMaxAccn", query = "SELECT d FROM DriverProp d WHERE d.maxAccn = :maxAccn"),
        @NamedQuery(name = "DriverProp.findByMaxBreaking", query = "SELECT d FROM DriverProp d WHERE d.maxBreaking = :maxBreaking"),
        @NamedQuery(name = "DriverProp.findByMaxStraightSpeed", query = "SELECT d FROM DriverProp d WHERE d.maxStraightSpeed = :maxStraightSpeed"),
        @NamedQuery(name = "DriverProp.findByMaxCornerSpeed", query = "SELECT d FROM DriverProp d WHERE d.maxCornerSpeed = :maxCornerSpeed")})
    public class DriverProp implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "DriverID")
        private Integer driverID;
        @Basic(optional = false)
        @NotNull
        @Column(name = "Gear")
        private int gear;
        @Basic(optional = false)
        @NotNull
        @Column(name = "ChangeUpRPM")
        private float changeUpRPM;
        @Basic(optional = false)
        @NotNull
        @Column(name = "ChangeDownRPM")
        private float changeDownRPM;
        @Basic(optional = false)
        @NotNull
        @Column(name = "PreferredMaxRPM")
        private float preferredMaxRPM;
        @Basic(optional = false)
        @NotNull
        @Column(name = "PreferredMinRPM")
        private float preferredMinRPM;
        @Basic(optional = false)
        @NotNull
        @Column(name = "DecisionTime")

My Question now i need an angular js that will send JSON file and that JSON should be saved to database using the REST services.. any idea to achieve that using angular fr client.. 我的问题现在我需要一个有角度的js,它将发送JSON文件,并且应该使用REST服务将JSON保存到数据库。

You can use 您可以使用

For a while I used restangular, it worked well. 有一阵子我使用矩形,效果很好。

Witrh Angular, the easiest way is to use $resource . Witrh Angular,最简单的方法是使用$resource In your case, it would something like that: 在您的情况下,将是这样的:

var app = (...)

app.factory('DriverPropFacadeREST', function($resource) {
    return $resource('http://(...)/driverprops/:id', {id:'@id'});
});

app.controller('DriverPropController', function($scope, DriverPropFacadeREST) {
    var inputData = { 'driverID': 'value', (...) };
    DriverPropFacadeREST.save(inputData, function(data) {
        console.log(data);
        (...)
    });
});

See this link in the Angular reference documentation for more details: https://docs.angularjs.org/api/ngResource/service/ $resource. 有关更多详细信息,请参见Angular参考文档中的此链接: https : //docs.angularjs.org/api/ngResource/service/ $ resource。

You could also use the low level API $http , as described below: 您还可以使用低级API $http ,如下所述:

app.controller('DriverPropController', function($scope, $http) {
    var inputData = { 'driverID': 'value', (...) };
    $http.post('http://(...)/driverprops', inputData)
         .success(function(data, status, headers, config) {
              // this callback will be called asynchronously
              // when the response is available
         })
         .error(function(data, status, headers, config) {
              // called asynchronously if an error occurs
              // or server returns response with an error status.
         });
});

See this link in the Angular reference documentation for more details: https://docs.angularjs.org/api/ng/service/ $http#post. 有关更多详细信息,请参见Angular参考文档中的此链接: https : //docs.angularjs.org/api/ng/service/ $ http#post。

Hope it helps you, Thierry 希望对您有帮助,蒂埃里

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM