
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1640879 13f79535-47bb-0310-9956-ffa450edef68
160 lines
7.4 KiB
HTML
160 lines
7.4 KiB
HTML
|
||
<!--
|
||
|
||
Licensed to the Apache Software Foundation (ASF) under one or more
|
||
contributor license agreements. See the NOTICE file distributed with
|
||
this work for additional information regarding copyright ownership.
|
||
The ASF licenses this file to You under the Apache License, Version 2.0
|
||
(the "License"); you may not use this file except in compliance with
|
||
the License. You may obtain a copy of the License at
|
||
|
||
http://www.apache.org/licenses/LICENSE- 2.0
|
||
|
||
Unless required by applicable law or agreed to in writing, software
|
||
distributed under the License is distributed on an "AS IS" BASIS,
|
||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
See the License for the specific language governing permissions and
|
||
limitations under the License.
|
||
-->
|
||
|
||
|
||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
<HTML>
|
||
<HEAD>
|
||
<!-- generateKeywords macro -->
|
||
<META name="description" content="Apache Tuscany">
|
||
<META name="keywords" content="apache, apache tuscany, tuscany, service, services, fabric, soa, service oriented architecture, sca, service component architecture, das, sdo, csa, ruby, opensource">
|
||
<!-- generateKeywords macro end -->
|
||
|
||
<LINK type="text/css" rel="stylesheet" href="http://tuscany.apache.org/stylesheets/default.css">
|
||
<LINK rel="SHORTCUT ICON" href="https://cwiki.apache.org/confluence/display/TUSCANY/$images/favicon.ico">
|
||
<TITLE>Apache Tuscany : SCA CPP Bindings REST</TITLE>
|
||
<META http-equiv="Content-Type" content="text/html;charset=UTF-8"></HEAD>
|
||
|
||
<BODY onload="init()">
|
||
<!-- topNav macro -->
|
||
<TABLE valign="top" border="0" cellspacing="0" cellpadding="0" width="100%" background="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg">
|
||
<TR>
|
||
<TD valing="top" align="left">
|
||
<A href="https://cwiki.apache.org/confluence/pages/viewpage.action?spaceKey=TUSCANY&title=$siteroot"><IMG src="http://tuscany.apache.org/images/TuscanyLogoNEW_Text_120px_bg.jpg" height="91" width="25" border="0"></A>
|
||
</TD>
|
||
<TD>
|
||
<A href="http://tuscany.apache.org/"><IMG src="http://tuscany.apache.org/images/TuscanyLogo.jpg" border="0"></A>
|
||
</TD>
|
||
|
||
<TD width="100%">
|
||
|
||
</TD>
|
||
|
||
<!-- Adds the edit page link to the top banner-->
|
||
<TD valign="bottom">
|
||
<DIV style="padding: 2px 10px; margin: 0px;">
|
||
<A href="https://cwiki.apache.org/confluence/pages/editpage.action?pageId=46552">
|
||
<IMG src="http://tuscany.apache.org/images/notep_16.gif" height="16" width="16" border="0" align="absmiddle" title="Edit Page"></A>
|
||
</DIV>
|
||
</TD>
|
||
|
||
</TR>
|
||
</TABLE>
|
||
<!-- topNav macro end -->
|
||
|
||
<!-- breadCrumbs macro -->
|
||
<TABLE border="0" cellpadding="2" cellspacing="0" width="100%">
|
||
<TR class="topBar">
|
||
<TD align="left" valign="middle" class="topBarDiv" nowrap="true" width="100%">
|
||
<A href="home.html" title="Apache Tuscany">Apache Tuscany</A> > <A href="home.html" title="Home">Home</A> > <A href="sca-overview.html" title="SCA Overview">SCA Overview</A> > <A href="sca-native.html" title="SCA Native">SCA Native</A> > <A href="sca-native-work-in-progress.html" title="SCA Native Work-in-progress">SCA Native Work-in-progress</A> > <A href="sca-cpp-users.html" title="SCA CPP Users">SCA CPP Users</A> > <A href="" title="SCA CPP Bindings REST">SCA CPP Bindings REST</A>
|
||
</TD>
|
||
|
||
<TD align="right" valign="middle" class="topBarDiv" align="left" nowrap="true">
|
||
<A href="http://mail-archives.apache.org/mod_mbox/tuscany-user">User List</A> | <A href="http://mail-archives.apache.org/mod_mbox/tuscany-dev">Dev List</A> | <A href="http://issues.apache.org/jira/browse/Tuscany">Issue Tracker</A>
|
||
</TD>
|
||
</TR>
|
||
</TABLE>
|
||
<!-- breadCrumbs macro end -->
|
||
|
||
|
||
<TABLE border="0" cellpadding="0" width="100%" bgcolor="#FFFFFF">
|
||
<TR>
|
||
<TD align="left" valign="top">
|
||
|
||
<!-- pageContent macro -->
|
||
<DIV id="PageContent">
|
||
|
||
<DIV class="pagecontent">
|
||
<DIV class="wiki-content">
|
||
<H2><A name="SCACPPBindingsREST-RESTResourcePatterns"></A>REST Resource Patterns</H2>
|
||
|
||
<P>If the service/reference uses an <interface.rest> interface, we map CRUD<BR>
|
||
methods to HTTP verbs to access resource representations as follows:</P>
|
||
|
||
<P>resource = retrieve()<BR>
|
||
-> GET <binding-uri><BR>
|
||
<- an XML element representing the REST resource</P>
|
||
|
||
<P>resource = retrieve(uri, parm-value-1, parm-value-n)<BR>
|
||
-> GET uri/parm-value-1/parm-value-n <BR>
|
||
or if uri ends with a '?'<BR>
|
||
-> GET uri?parm-name-1=parm-value1&parm-name-n=parm-value-n<BR>
|
||
<- an XML element representing the REST resource</P>
|
||
|
||
<P>uri = create(resource)<BR>
|
||
-> POST <binding-uri> + an XML element representing the resource to create<BR>
|
||
<- Location header containing the uri of the created resource</P>
|
||
|
||
<P>update(resource)<BR>
|
||
-> PUT <binding-uri> + an XML element representing the updated resource</P>
|
||
|
||
<P>update(uri, parm-1, parm-n, resource)<BR>
|
||
-> PUT uri/parm-value-1/parm-value-n + an XML element representing the updated resource<BR>
|
||
or if uri ends with a '?'<BR>
|
||
-> PUT uri?parm-name-1=parm-value1&parm-name-n=parm-value-n + an XML element representing the updated resource</P>
|
||
|
||
<P>delete()<BR>
|
||
-> DELETE <binding-uri></P>
|
||
|
||
<P>delete(uri, parm-1, parm-n)<BR>
|
||
-> DELETE uri/parm-value-1/parm-value-n<BR>
|
||
or if uri ends with a '?'<BR>
|
||
-> DELETE uri?parm-name-1=parm-value1&parm-name-n=parm-value-n</P>
|
||
|
||
<P>In this mode, HTTP return codes are used almost as described in the Atom spec. Also GET returns etags with the retrieved resource representations to help caching by clients.</P>
|
||
|
||
<H2><A name="SCACPPBindingsREST-RESTRPCPatterns"></A>REST RPC Patterns</H2>
|
||
<P>If the service/reference does not use an <interface.rest> interface, then this is not a real REST pattern, we simply flow method calls over XML / HTTP as follows:</P>
|
||
|
||
<P>result = method-abc(parm-1, parm-n)</P>
|
||
|
||
<P>if single input parameter of complex type<BR>
|
||
-> POST <binding-uri>/method-abc + XML element representing the complex parameter or if multiple parameters including parameters of complex types<BR>
|
||
-> POST <binding-uri>/method-abc + Mime multipart/form-data body containing one parameter per part or if multiple parameters all of simple types<BR>
|
||
-> GET<BR>
|
||
<binding-uri>/method-abc?parm-1-name=parm-1-value&parm-n-name=parm-n-value</P>
|
||
|
||
<P><- an XML element representing the result</P>
|
||
</DIV>
|
||
</DIV>
|
||
</DIV>
|
||
<!-- pageContent macro end -->
|
||
|
||
</TD>
|
||
</TR>
|
||
</TABLE>
|
||
|
||
<!-- footer macro -->
|
||
<SCRIPT src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
||
</SCRIPT>
|
||
<SCRIPT type="text/javascript">
|
||
_uacct = "UA-1174707-5";
|
||
urchinTracker();
|
||
</SCRIPT>
|
||
|
||
<A href="http://www.statcounter.com/" target="_blank"><IMG src="http://c26.statcounter.com/counter.php?sc_project=2619156&java=0&security=94bd7e7d&invisible=0" alt="website stats" border="0"></A>
|
||
|
||
<DIV class="footer">
|
||
Copyright <20> 2003-2012, The Apache Software Foundation </BR>
|
||
Apache Tuscany and the Apache Tuscany project logo are trademarks of The Apache Software Foundation.
|
||
</DIV>
|
||
<!-- footer macro end -->
|
||
|
||
</BODY>
|
||
</HTML>
|