Example: Update resource with WSPut
Update a resource with the WSPut attribute.
Example updating a resource with WSPut
In this sample REST function a user resource is updated. In the function's
id
parameter the attribute WSParam specifies the user to update,
and the thisUser
variable of type profileType
contains the
values to update. The thisUser
data is passed in the message body in either
JSON or XML format.
WSThrows is set to handle errors. In the TRY/CATCH
block, the sqlca
record is checked after
the execution of the SQL query. The SQLERRMESSAGE
is set to the
message
field of the userError
variable, and a call to
SetRestError()
returns the message defined in WSThrows
for the error.
IMPORT com
TYPE profileType RECORD
id INTEGER,
name VARCHAR(100),
email VARCHAR(255)
# ...
END RECORD
PUBLIC DEFINE userError RECORD ATTRIBUTE(WSError = "User error")
message STRING
END RECORD
PUBLIC FUNCTION updateUsers(
id INTEGER ATTRIBUTES(WSParam),
thisUser profileType)
ATTRIBUTES(WSPut,
WSPath = "/users/{id}",
WSDescription = "Update a user profile",
WSThrows = "400:@userError")
RETURNS STRING
DEFINE ret STRING
TRY
UPDATE users
SET name = thisUser.name,
email = thisUser.email
WHERE id = thisUser.id
IF sqlca.sqlerrd[3] = 1 THEN # sqlerrd[3] = processed rows
LET ret = SFMT("Updated user with ID: %1",id)
ELSE
LET ret = SFMT("No user with ID: %1",id)
END IF
CATCH
LET ret=SFMT("Error updating user with ID: %1",id)
LET userError.message = SFMT("SQL error:%1 [%2]",
sqlca.sqlcode, SQLERRMESSAGE)
CALL com.WebServiceEngine.SetRestError(400,userError)
END TRY
RETURN ret
END FUNCTION