How to receive the response in the Body when sending file using restful post method.
I am sending a file in Postman and receiving a status 200OK. but i need to get the response in the body too. I have Implemented the class %CSP.REST to get the %request and %response. There is no default method to invoke and post the content via %Response class. Can any one suggest me the sample code for that.
Below is a class method that returns details of a Contact. Note the line that that is highlighted below. Basically any output written from your REST Classmethod becomes part of the body of the response. So the WRITE of the output of %ToJSON() puts a JSON object in the response body.
ClassMethod ContactDetail(ContactID As %String) As %Status
{
#dim %response as %CSP.Response
#dim %request as %CSP.Request
#dim ContactItem as WebREST.Data.Contact
#dim ActionItem as WebREST.Data.Actions
set tSC = $System.Status.OK()
Try {
if ContactID {
set ObjSC = ""
set ContactItem = ##Class(WebREST.Data.Contact).%OpenId(ContactID,,.ObjSC)
if $System.Status.IsError(ObjSC) {
// test for object not found error
if $System.Status.GetErrorCodes(ObjSC) = "5809" {
set %response.Status = ..#HTTP404NOTFOUND
} else {
throw ##class(%Exception.StatusException).CreateFromStatus(ObjSC)
}
} else {
set ResponseObj = {}
set ResponseObj.ContactID = ContactItem.ContactID
set ResponseObj.FirstName = ContactItem.FirstName
set ResponseObj.LastName = ContactItem.LastName
set ResponseObj.Position = ContactItem.Position
set ResponseObj.Company = ContactItem.Company.Name
set ResponseObj.Phone = ContactItem.Phone
set Address = {}
set Address.Street = ContactItem.Address.Street
set Address.City = ContactItem.Address.City
set Address.State = ContactItem.Address.State
set Address.PostalCode = ContactItem.Address.PostalCode
set ResponseObj.Address = Address
set ResponseObj.Agent = ContactItem.Agent.Name
// now load each action into an array
set Actions = []
set ActionKey = ""
do {
set ActionResponse = {}
set ActionItem = ContactItem.Actions.GetNext(.ActionKey)
if ActionItem '= "" {
set ActionResponse.ActionType = ActionItem.ActionType
set ActionResponse.DueDate = $zdate(ActionItem.DueDate,3)
set ActionResponse.Notes = ActionItem.Notes
set ActionResponse.Complete = ActionItem.Complete
set ActionResponse.Agent = ActionItem.Agent.Name
do Actions.%Push(ActionResponse)
}
} while ActionKey '= ""
set ResponseObj.Actions = Actions
Write ResponseObj.%ToJSON()
}
} else {
set %response.Status = ..#HTTP400BADREQUEST
}
} catch Exception {
set tSC = Exception.AsStatus()
}
Quit tSC
}
Thanks. This code is working for me.
moved to answer instead of comment
Just output the data you need to the current device, for example: