Skip to content
Demis Bellot edited this page Dec 27, 2013 · 7 revisions

When you create a service, there are by default three endpoints:

  • User-defined REST endpoint
  • SOAP endpoint: /[soap11|soap12]
  • Default endpoint: /[xml|json|html|jsv|csv]/[reply|oneway]/[servicename]

The preferred way to call the webservice is mostly using the REST endpoint. As you have seen, user-defined REST endpoints can be configured with the Route attribute for each request DTO.

But you can also call your service by using the default endpoint, without configuring a REST url with the default endpoint. Of course there's always the option to use the SOAP endpoint.

Sample requests:

The possible requests for the following request DTO are:

[Route("/hello")]
public class Hello
{
    public string Name { get; set; }
}

Option 1

SOAP endpoint

POST mono.servicestack.net/ServiceStack.Hello/servicestack/soap11

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>

<Hello xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.servicestack.net/types">
  <Name>String</Name>
</Hello>

    </soap:Body>
</soap:Envelope>

Rest endpoint:

POST mono.servicestack.net/ServiceStack.Hello/servicestack/hello

{"Name":"World"}

Default endpoint:

POST mono.servicestack.net/ServiceStack.Hello/servicestack/json/reply/Hello

{"Name":"World"}

Option 2

But you don't need to pass the Name of the request DTO in the request body. There's also the possibility to set the value of Name with URL parameters (works only with REST and default endpoint of course).

REST endpoint:

POST mono.servicestack.net/ServiceStack.Hello/servicestack/hello?Name=World

Default endpoint:

POST mono.servicestack.net/ServiceStack.Hello/servicestack/json/reply/Hello?Name=World

You can also combine the two approaches.


Option 3

Last but not least there exists another way to set the value of Name! But this works only with the REST endpoint: If you add the following mapping to the request DTO above:

[Route("/hello/{Name}")]

...you will be able to set the name in the URL itself, without any URL parameters:

Rest endpoint:

GET mono.servicestack.net/ServiceStack.Hello/servicestack/hello/World

As you can see {Name} (in the mapping) is the placeholder for the value of the property Name.

Tip: The last two approaches are mostly used for GET and DELETE requests, because often clients don't support to attach a request body for these HTTP methods.

Tip: As you may have noticed, ServiceStack is also capable to support different formats (JSON, XML, etc). There exists another separate tutorial about formats.



  1. Getting Started
    1. Create your first webservice
    2. Your first webservice explained
    3. ServiceStack's new API Design
    4. Designing a REST-ful service with ServiceStack
    5. Example Projects Overview
  2. Reference
    1. Order of Operations
    2. The IoC container
    3. Metadata page
    4. Rest, SOAP & default endpoints
    5. SOAP support
    6. Routing
    7. Service return types
    8. Customize HTTP Responses
    9. Plugins
    10. Validation
    11. Error Handling
    12. Security
    13. Debugging
  3. Clients
    1. Overview
    2. C# client
    3. Silverlight client
    4. JavaScript client
    5. Dart Client
    6. MQ Clients
  4. Formats
    1. Overview
    2. JSON/JSV and XML
    3. ServiceStack's new HTML5 Report Format
    4. ServiceStack's new CSV Format
    5. MessagePack Format
    6. ProtoBuf Format
  5. View Engines 4. Razor & Markdown Razor
    1. Markdown Razor
  6. Hosts
    1. IIS
    2. Self-hosting
    3. Messaging
    4. Mono
  7. Security
    1. Authentication/authorization
    2. Sessions
    3. Restricting Services
  8. Advanced
    1. Configuration options
    2. Access HTTP specific features in services
    3. Logging
    4. Serialization/deserialization
    5. Request/response filters
    6. Filter attributes
    7. Concurrency Model
    8. Built-in caching options
    9. Built-in profiling
    10. Form Hijacking Prevention
    11. Auto-Mapping
    12. HTTP Utils
    13. Virtual File System
    14. Config API
    15. Physical Project Structure
    16. Modularizing Services
    17. MVC Integration
  9. Plugins 3. Request logger 4. Swagger API
  10. Tests
    1. Testing
    2. HowTo write unit/integration tests
  11. Other Languages
    1. FSharp
    2. VB.NET
  12. Use Cases
    1. Single Page Apps
    2. Azure
    3. Logging
    4. Bundling and Minification
    5. NHibernate
  13. Performance
    1. Real world performance
  14. How To
    1. Sending stream to ServiceStack
    2. Setting UserAgent in ServiceStack JsonServiceClient
    3. ServiceStack adding to allowed file extensions
    4. Default web service page how to
  15. Future
    1. Roadmap

Clone this wiki locally