Sending multipart requests in RestAssured.Net
This week sees the release of RestAssured.Net version 4.2.0. Next to support for .NET 8, which has been released earlier this month, one of the most significant changes has been made in the support for creating and sending multipart requests. In this blog post, I want to share some more details on these improvements.
What are multipart requests?
Multipart requests allow you to send multiple sets of data in a single request body, separated by boundaries. They are typically used for file uploads, as well as for sending multiple types of data in a single request, such as a file combined with some metadata in JSON format.
Now, in earlier versions of RestAssured.Net, you couldn’t actually send multiple sets of data in a request, even though you could send one or more files using a multipart request. I was made aware of this omission through an issue submitted on the RestAssured.Net repository, and that triggered me to dive deeper into how multipart requests are created, and how the .NET
HttpRequestMessage supports them.
That research led to much improved support for multipart requests in the latest version of RestAssured.Net. Let’s have a look at some examples.
Example 1: uploading a file, the old way
Before version 4.2.0, RestAssured.Net supported uploading one or more files, but nothing else, as a multipart request body in the following way:
When the contents of the file are equal to ‘Watch Office Space’, this yields the following request:
Overloads are available for overriding the default control name (
file) and the content type (automatically determined,
If you want to upload more than one file in a single request, you can simply chain multiple calls to
Example 2: uploading files with additional data
RestAssured.Net version 4.2.0 introduces a new way to upload multipart requests by means of a new method
MultiPart(string name, HttpContent content). This enables you to upload any data in multipart form, as long as it is of type
HttpContent (documentation, or, in practice, of a type that derives from
For example, the same file can now also be uploaded alongside other fields using
If you don’t want to make multiple calls to
MultiPart(), you can also pass in an object of type
More examples of multipart form request creation can be found in the RestAssured.Net acceptance tests.
RestAssured.Net can be found on NuGet."