Form
jin-frame supports form data submission, which can be handled in two main ways:
application/x-www-form-urlencodedmultipart/form-data
These formats make it easy to handle file uploads or form field submissions.
application/x-www-form-urlencoded
The application/x-www-form-urlencoded format uses Axios’s built-in transformRequest function to convert form data. When you set the content-type to application/x-www-form-urlencoded in jin-frame, you can use the default transformRequest function. If needed, you can also pass your own transformRequest function as a constructor option to customize behavior.
@Post({
host: 'http://some.api.google.com/jinframe/:passing',
contentType: 'application/x-www-form-urlencoded',
})
class TestUrlencodedPostFrame extends JinEitherFrame {
@Param()
declare public readonly passing: string;
@Body()
declare public readonly username: string;
@Body()
declare public readonly password: string;
}By setting the content-type to application/x-www-form-urlencoded, jin-frame will automatically apply its default transformRequest function. Alternatively, you can define and provide a custom transformRequest function through constructor options.
This allows you to transmit key-value data in the standard URL-encoded format.
multipart/form-data
The multipart/form-data format is mainly used for file uploads or complex data submissions. Internally, jin-frame uses the form-data package to process this format.
@Post({
host: 'http://some.api.google.com/fileupload-case04',
contentType: 'multipart/form-data',
})
class TestGetFrame extends JinEitherFrame {
@Body()
declare public readonly description: string;
@Body()
declare public readonly myFile: JinFile<Buffer>;
@Body()
declare public readonly myFiles: JinFile<Buffer>[];
}- When
content-typeis set tomultipart/form-data, jin-frame uses theform-datapackage to automatically generate theAxiosRequestConfig.datafield value.
This makes it simple to upload a variety of data types, including images, documents, and binary files.
Summary
- Use
application/x-www-form-urlencodedfor simple key-value data submissions. - Use
multipart/form-datawhen uploading files or sending complex structured data.