Skip to main content
Version: Next

HTTP Responses

Every value returned from a route action will be automatically converted into an HTTP response. If the return type is an object or an array, it will be automatically set as the application/json response type.

// This will return JSON
Route.get("/", () => {
return {
success: true,
data: {
// ...some data
},
};
});

// This will return a string
Route.get("/", () => {
return "Hello World";
});

Response Facade

If you want to have full control over the response, you can use the Response facade.

import { Response } from "@lunoxjs/core/facades";

Route.get("/", () => {
// Response.make(data: any, status: number, headers: object)
return Response.make(
{
success: true,
data: {
// ...some data
},
},
201,
{
"Cache-Control": "public, max-age=604800",
}
);
});

Attaching Headers to Response

You can also add additional headers to the current response using the setHeader method.

Response.make(data)
.setHeader("key", "value")
.setHeader("anotherKey", "anotherValue");

Redirects

Redirect Global Helper

Sometimes you may want to redirect to another route. This can be done simply by returning the redirect helper.

Route.post("/login", () => {
return redirect("/dashboard");
});

The redirect helper is a global function that returns an instance of RedirectResponse. There is another global redirect helper called back. This method simply redirects back to the previous URL.

return back(); // Returns a RedirectResponse to the previous URL

Redirect with Flashed Data

The RedirectResponse instance has a method to inject flashed data. This data will be stored in the session and will be deleted after the redirect URL is visited.

redirect('someurl')->with({
error: 'Some Error Message'
});

We can access flashed data using req.session().get('key'). So, for the example above, to access the flashed error message, we can use req.session().get('error').

Redirect with Input

You can use the withInput method provided by the RedirectResponse instance to flash the current request's input data to the session before redirecting the user to a new location. This is typically done if the user has encountered a validation error. Once the input has been flashed to the session, you can easily retrieve it during the next request to repopulate the form.

return back()->withInput();

To access the old input, we provide the old method on the session instance.

req.session().old("username");

View Response

If you need to return a view as the response's content, you should use the view method.

return view("view-name");

We will discuss Lunox's view in more detail in the "Views" section.