Difference between revisions of "REST API:staticResource Resource"

From LongJump Support Wiki
imported>Aeric
 
imported>Aeric
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
Manage Static Resources stored on the platform using the [[REST API]].  
Manage [[Static Resources]] stored on the platform using the [[REST API]].  


===Access Permissions===
===Access Permissions===
{{permissions|Manage Develop Features|use the <tt>staticResource</tt> resource.}}
{{permissions|Use Development Features|use this resource.}}


===Get a List of all Static Resources===
===Get a List of all Static Resources===
Line 8: Line 8:
;Method:GET
;Method:GET
   
   
;URI:<tt><nowiki>https://{domain}/networking/rest/staticResource</nowiki></tt>  
;URI:<tt>{{platformURL}}/rest/staticResource</tt>  


;Response:
;Response:
Line 43: Line 43:
;Method:GET
;Method:GET
   
   
;URI:<tt><nowiki>https://{domain}/networking/rest/staticResource/{resourceId}?{query_parameters}</nowiki></tt>  
;URI:<tt>{{platformURL}}/rest/staticResource/{resourceId}?{query_parameters}</tt>  


{{Query Parameters|
{{Query Parameters|
Line 80: Line 80:
;Method:POST
;Method:POST
   
   
;URI:<tt><nowiki>https://{domain}/networking/rest/staticResource</nowiki></tt>  
;URI:<tt>{{platformURL}}/rest/staticResource</tt>  


;Request:
;Request:
:A multipart request with file part for the resource and an XML/JSON part with processing information.
:A multipart request with file part for the resource and an XML/JSON part with processing information.


: Here's a sample request that loads a properties file. (For the full program, see the [[#Sample Http Client to Upload a Static Resource|Sample Http Client]] below.))
: Here's a sample request that loads a properties file.  
:;Considerations:
::* For a JSON payload, the name would be <tt>__json_data__</tt>, and the content-type would be <tt>application/json</tt>.
::* For the full program, see the [[#Sample Http Client to Upload a Static Resource|Sample Http Client]] below.))


:<syntaxhighlight lang="xml" enclose="div">
:<syntaxhighlight lang="xml" enclose="div">
Line 91: Line 94:


--.............................103832778631715
--.............................103832778631715
Content-Disposition: form-data; name="xml_part";
Content-Disposition: form-data; name="__xml_data__";
Content-Type=application/xml;
Content-Type=application/xml;


Line 128: Line 131:
;Method:PUT
;Method:PUT
   
   
;URI:<tt><nowiki>https://{domain}/networking/rest/staticResource/{resourceId}</nowiki></tt>  
;URI:<tt>{{platformURL}}/rest/staticResource/{resourceId}</tt>  


;Request:
;Request:
Line 150: Line 153:
;Method:DELETE
;Method:DELETE


;URI:<tt><nowiki>https://{domain}/networking/rest/staticResource/{recordId}</nowiki></tt>
;URI:<tt>{{platformURL}}/rest/staticResource/{recordId}</tt>


;Response:
;Response:
Line 168: Line 171:
! Name!!Type!!Attribute!!Required During Add!!Description!!Additional Information
! Name!!Type!!Attribute!!Required During Add!!Description!!Additional Information
|-
|-
| id || String || Read Only || || [[Record Identifier]] ||  
| id || String || Read Only || || [[Record Id]] ||  
|-
|-
| name || String || Read Only || align="center"|[[File:Checkmark.gif|link=]]  
| name || String || Read Only || align="center"|[[File:Checkmark.gif|link=]]  

Latest revision as of 00:39, 8 June 2012

Manage Static Resources stored on the platform using the REST API.

Access Permissions

Lock-tiny.gif

Users that have the Use Development Features permission can use this resource. 

Get a List of all Static Resources

Method
GET
URI
https://na.longjump.com/networking/rest/staticResource
Response
<platform>
    <staticResource>
        <id>567rty789uio</id>
        <name>JSPsample</name>
        <resource_file_name>jsp.txt</resource_file_name>
        <size>613</size>
        <mime_type>text/plain</mime_type>
        <date_created>2010-11-12T13:14:15Z</date_created>
        <created_id type="USER" 
          uri="https://{domain}/networking/rest/user/123qwe456rty" 
          displayValue="John Public">123qwe456rty</created_id>
        <date_modified>2010-11-12T13:14:15Z</date_modified>
        <modified_id type="USER" 
          uri="https://{domain}/networking/rest/user/123qwe456rty" 
          displayValue="John Public">123qwe456rty</modified_id>
        </staticResource>
        ...
    <message>
        <code>0</code>
        <description>Success</description>
    </message>
    <recordCount>24</recordCount>
</platform>
See also: REST API:Error Codes

Get a Static Resource

Method
GET
URI
https://na.longjump.com/networking/rest/staticResource/{resourceId}?{query_parameters}
Query Parameters
  • getfile
  • If true, download the physical file
  • If false, return the XML descriptor only (default)
For more information, see: Specifying Query Parameters in REST APIs
Response
<message>
    <staticResource>
        <id>567rty789uio</id>
        <name>JSPsample</name>
        <resource_file_name>jsp.txt</resource_file_name>
        <size>613</size>
        <mime_type>text/plain</mime_type>
        <date_created>2010-11-12T13:14:15Z</date_created>
        <created_id type="USER" 
          uri="https://{domain}/networking/rest/user/123qwe456rty" 
          displayValue="John Public">123qwe456rty</created_id>
        <date_modified>2010-11-12T13:14:15Z</date_modified>
        <modified_id type="USER" 
          uri="https://{domain}/networking/rest/user/123qwe456rty" 
          displayValue="John Public">123qwe456rty</modified_id>
        </staticResource>
    <code>0</code>
    <description>Success</description>
    </message>
</platform>
See also: REST API:Error Codes

Add a Static Resource

Method
POST
URI
https://na.longjump.com/networking/rest/staticResource
Request
A multipart request with file part for the resource and an XML/JSON part with processing information.
Here's a sample request that loads a properties file.
Considerations
  • For a JSON payload, the name would be __json_data__, and the content-type would be application/json.
  • For the full program, see the Sample Http Client below.))
Content-Type: multipart/form-data; boundary=.............................103832778631715

--.............................103832778631715
Content-Disposition: form-data; name="__xml_data__";
Content-Type=application/xml;

<platform>
    <record>
        <name>JSPsample</name>
        <description>Simple JSP page.</description>
    </record>
</platform>

.............................103832778631715
Content-Disposition: form-data; name="file_part"; filename="message.properties"
Content-type: text/plain

<h1 align="center">Hello World!</h1>
.............................103832778631715--
Learn more: REST API:Multipart Request
Response
<platform>
    <message>
        <code>0</code>
        <description>Success</description>
        <id>...</id>   // ID of the added resource
    </message>
</platform>
See also: REST API:Error Codes

Update a Static Resource

Method
PUT
URI
https://na.longjump.com/networking/rest/staticResource/{resourceId}
Request
The format of the request is identical to that shown in Add a Static Resource.
Response
<platform>
    <message>
        <code>0</code>
        <description>Success</description>
        <id>...</id>   // ID of the updated resource
    </message>
</platform>
See also: REST API:Error Codes

Delete a Static Resource

Method
DELETE
URI
https://na.longjump.com/networking/rest/staticResource/{recordId}
Response
<platform>
    <message>
        <code>0</code>
        <description>Success</description>
    </message>
</platform>
See also: REST API:Error Codes

Fields

Name Type Attribute Required During Add Description Additional Information
id String Read Only Record Id
name String Read Only Checkmark.gif Static Resource name
description String Editable on Add/Update Description of content
document_id String Read Only
resource_file_name String Read Only
size Integer Read Only
mime_type String Read Only
date_created Data Read Only
created_id Lookup Read Only
date_modified Date Read Only
modified_id Lookup Read Only

Sample Http Client to Upload a Static Resource

The StaticResourceUploadClient demo program extends the REST API:BaseClient class to upload a static resource. With a couple of modifications, it can be used to do updates or load arbitrary file types.

Thumbsup.gif

Tip: The REST_samples.zip file contains BaseClient, the utility class it uses, and extensions like this one that demonstrate REST operations.

package demo.rest;

import java.io.File;
import javax.ws.rs.core.MediaType;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
import org.apache.commons.httpclient.methods.multipart.StringPart;

/**
 * Load a static resource file.
 * Load a static resource file. This program extends demo.rest.BaseClient.java
 * which in turn makes use of demo.rest.BaseUtil.java.
 * <p>
 * Note:<br/>
 * This class uses the Apache commons HttpClient.
 * The Apache wink RestClient is generally more straightforward,
 * but multipart requests currently do not work when made using that client.
 */
public class StaticResourceUploadClient extends BaseClient
{
  	
  public void execute(String cookieString) 
  {
    String url = baseUrl + "/staticResource";
    //Use this for an update:
    // String url = baseUrl + "/staticResource/{id}";     // <--[1]
    String xml = "<platform>"
               + "<staticResource>"
                  + "<name>upload_test</name>"
                  + "<description>Test an API-driven upload</description>"
               + "</staticResource>"
               + "</platform>";
    
    try
    {
      // File part
      File file = new File("C:/testfiles/test.txt"); 
      FilePart fp = new FilePart("file_part", file);
      fp.setContentType(MediaType.TEXT_PLAIN);            // <--[3]
         //Use BaseUtil.mediaType() to set type based on file extension    
 
      // XML part
      // For JSON, use __json_data__ and APPLICATION_JSON
      StringPart sp = new StringPart("__xml_data__", xml);
      sp.setContentType(MediaType.APPLICATION_XML);        

      // Multipart wrapper
      final Part[] part = {fp, sp};        

      // Create the request
      HttpClient httpClient = new HttpClient();
      PostMethod httpMethod = new PostMethod(url);        // <--[2]
        // Use PutMethod for an update      

      // Set the response type (xml) and the session cookie. 
      //(Had we logged in with HttpClient, the cookie would be handled
      // automatically. But since we let BaseClient do the log in and log out,
      // we need to tack on the cookie string here.) 
      httpMethod.addRequestHeader("Cookie", cookieString);
      httpMethod.addRequestHeader("Accept", MediaType.APPLICATION_XML);
      httpMethod.setRequestEntity(
        new MultipartRequestEntity(part, httpMethod.getParams())
      );
 
      // Check status & echo response
      int status  = httpClient.executeMethod(httpMethod); 
      String responseXml = httpMethod.getResponseBodyAsString();
      if ((status == 200) || (status == 201))
      {
        // 200=Successful GET, PUT, or DELETE. 201=Successful POST.       
        echoResponse(httpMethod.getResponseBodyAsStream());
      }
      else
      {
        echoStatus(status, responseXml);
      }
    }
    catch (ClientWebException webException)
    {
        echoResponse(webException);
    }
    catch (Exception e)
    {
      System.out.println(e.getMessage());
      e.printStackTrace();
    }
  }
	
  public static void main(String[] args) 
  {
    StaticResourceUploadClient client = new StaticResourceUploadClient();
    String cookieString = client.login();
    client.execute(cookieString);
    client.logout();
  }	
}
Notes:
  • [1,2] - Change these lines to update an existing resource
  • [3] - Use the BaseUtil mediaType() method to automatically set the content type appropriate for the file.