Spring java ResponseEntity<T> with multiple parameter types -
i'm working java , spring mvc, in first version of app response responseentity<string> , haved , error returned return new responseentity<string>(httperrors.tostring(), responseheaders, httpstatus.bad_request); , when right return new responseentity<string>(loginresponse.tostring(), responseheaders, httpstatus.ok);. believe theres better way it, without using tostring() method, returning specific object according case this:
@restcontroller @requestmapping("/user") public class logincontroller { /** login service validate user. */ @autowired loginservice loginservice; @requestmapping(value = "/login", method = requestmethod.post) public @responsebody responseentity<?> validate(@requestbody final userlog login) { webuser webuser = loginservice.getuserdetails(login.getlogin(), login.getpassword()); httpheaders responseheaders = new httpheaders(); responseheaders.setcontenttype(mediatype.application_json); if (webuser == null) { httperrors httperrors = new httperrors(apicommonresources.error_402, "error" + "." + apicommonresources.error_402, apicommonresources.error_402_text); return new responseentity<httperrors>(httperrors, responseheaders, httpstatus.bad_request); } list<account> useraccounts = loginservice.getmerchantaccounts(webuser.getmerchantid()); // json web token builder token = "b7d22951486d713f92221bb987347777"; loginresponse loginresponse = new loginresponse(apicommonresources.success_request_code, token); return new responseentity<loginresponse>(loginresponse, responseheaders, httpstatus.ok); } } the question how can create class can wraps loginresponse httperrorsobject types , send in ? returning object in responseentity:
loginresponse class:
public class loginresponse{ public loginresponse(integer statuscode, string token){ this.setstatuscode(statuscode); this.settoken(token); } private string token; private integer statuscode; public string gettoken() { return token; } public void settoken(string token) { this.token = token; } public integer getstatuscode() { return statuscode; } public void setstatuscode(integer statuscode) { this.statuscode = statuscode; } @override public string tostring() { stringbuilder jsonresponse = new stringbuilder(); jsonresponse.append("{"); jsonresponse.append("\"statuscode\":"); jsonresponse.append("\"" + statuscode + "\","); jsonresponse.append("\"token\":"); jsonresponse.append("\"" + token + "\""); jsonresponse.append("}"); return jsonresponse.tostring(); } } and httperrors class:
public class httperrors { public httperrors(){ } public httperrors(string errorcode, string errorkey, string errormessage) { super(); this.errorcode = errorcode; this.errorkey = errorkey; this.errormessage = errormessage; } private string errorcode; private string errorkey; private string errormessage; public string geterrorcode() { return errorcode; } public void seterrorcode(string errorcode) { this.errorcode = errorcode; } public string geterrorkey() { return errorkey; } public void seterrorkey(string errorkey) { this.errorkey = errorkey; } public string geterrormessage() { return errormessage; } public void seterrormessage(string errormessage) { this.errormessage = errormessage; } @override public string tostring() { stringbuilder jsonerror = new stringbuilder(); jsonerror.append("{"); jsonerror.append("\"errorcode\":"); jsonerror.append("\"" + errorcode + "\","); jsonerror.append("\"errorkey\":"); jsonerror.append("\"" + errorkey + "\","); jsonerror.append("\"errormessage\":"); jsonerror.append("\"" + errormessage + "\""); jsonerror.append("}"); return jsonerror.tostring(); } }
public class response<t> { private int httpstatus; private t data; //getter , setter consructor eg constructors public restresponse(t data){ this(http_ok,data) } public restresponse(int httpstatus,t data){ this.httpstatus = httpstaus; this.data = data; } now use template response objects (repsone objects can pojos too)
return new restentity<loginresponse>(loginresponse,statuscode) //loginresponse object where loginresponse is
public class loginresponse { private string token; //getter , setter , constructors. } you should take time establish rest contracts (read using google :)) , follow through using basic logic. java , spring magic together. have fun.
Comments
Post a Comment