# Server Side Swift with Vapor: Making a Web App | Ray Wenderlich

**URL:** <https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572>\
**Category:** 🎓 Courses & Articles\
**Created:** [December 1, 2016, 2:01pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572 "2016-12-01T14:01:24Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![rwenderlich](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/rwenderlich/32/108604_2.png) [@rwenderlich](https://forums.kodeco.com/u/rwenderlich)\
**Post date:** [December 1, 2016, 2:01pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/1 "2016-12-01T14:01:24Z")

</div>

Learn how to make a simple web app to list, create, and delete objects using Vapor, a popular server side swift framework.

* * *
 This is a companion discussion topic for the original entry at [https://www.raywenderlich.com/5003-server-side-swift-with-vapor-making-a-web-app](https://www.raywenderlich.com/5003-server-side-swift-with-vapor-making-a-web-app)

---

<div class="post-metadata">

**Author:** ![goranche](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/goranche/32/108582_2.png) [@goranche](https://forums.kodeco.com/u/goranche)\
**Post date:** [December 1, 2016, 2:22pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/2 "2016-12-01T14:22:25Z")

</div>

good one, as usual 👍🏼

although, in the implementation of `addAcronym` (and `deleteAcronym`), I’d rather just return the value of a call to `indexView` instead of the redirect, so basically `return indexView(request)`.

just a personal choice / opinion thing, I guess 😉

---

<div class="post-metadata">

**Author:** ![yoele](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/yoele/32/83407_2.png) [@yoele](https://forums.kodeco.com/u/yoele)\
**Post date:** [December 1, 2016, 5:12pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/3 "2016-12-01T17:12:37Z")

</div>

Thank you @rwenderlich great tutorial,  
it would be great if you can make an advanced course on Vapor .  
Have a good one

YoelL

---

<div class="post-metadata">

**Author:** ![booorisss](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/booorisss/32/67678_2.png) [@booorisss](https://forums.kodeco.com/u/booorisss)\
**Post date:** [December 1, 2016, 6:34pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/4 "2016-12-01T18:34:39Z")

</div>

Awesome tutorials! Advanced course on Vapor would be incredibly beneficial. How to make it secure, advanced interaction with database and etc. Thank you so much!

---

<div class="post-metadata">

**Author:** ![rwenderlich](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/rwenderlich/32/108604_2.png) [@rwenderlich](https://forums.kodeco.com/u/rwenderlich)\
**Post date:** [December 1, 2016, 9:00pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/5 "2016-12-01T21:00:36Z")

</div>

@goranche Thanks! There is one advantage to using the redirect though (which I should have mentioned in the video)! :]

Imagine you don’t redirect, and `return try indexView(request: request)` instead. Then when you add an acronym, your browser is displaying the result of the POST to `/til`, and if you refresh the page, the browser effectively tries to re-post the same acronym (which isn’t desired; really the user probably just wants to refresh the latest list of acronyms). You get a warning like this:

![](https://raywenderlich-com-v3-forums.s3.amazonaws.com/original/3X/9/5/95eeb473e7bd2b4cafb85965a372a0401821cbaf.png)

Similarly, in the deleting an acronym case, the browser is displaying the result of a POST to `/til/acronymId/delete`:

![](https://raywenderlich-com-v3-forums.s3.amazonaws.com/original/3X/0/4/0410fb09519af04d91a9b9d5b7deebbd86720e89.png)

And if you refreshed the browser, it would try and delete that acronym instead.

By redirecting to `index`, if you refresh the page it doesn’t try to re-add or delete anything. I hope that makes sense, and thanks for pointing this out as I’ll be sure to mention this if I ever cover this again! :]

@yoele @booorisss Thanks for your kind words and suggestions! :]

---

<div class="post-metadata">

**Author:** ![goranche](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/goranche/32/108582_2.png) [@goranche](https://forums.kodeco.com/u/goranche)\
**Post date:** [December 1, 2016, 9:13pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/6 "2016-12-01T21:13:13Z")

</div>

huh 🤔 hadn’t thought of that, but yes, you’re right 😅

hope you didn’t waste too much time trying it out 😌

---

<div class="post-metadata">

**Author:** ![alexhedley](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/alexhedley/32/85744_2.png) [@alexhedley](https://forums.kodeco.com/u/alexhedley)\
**Post date:** [December 2, 2016, 7:45pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/7 "2016-12-02T19:45:59Z")

</div>

Thanks for another tut, we’re building up a nice website now.

---

<div class="post-metadata">

**Author:** ![keyner](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/keyner/32/47195_2.png) [@keyner](https://forums.kodeco.com/u/keyner)\
**Post date:** [December 2, 2016, 9:23pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/8 "2016-12-02T21:23:32Z")

</div>

Thanks Ray. You are awesome. From Peru!!!

---

<div class="post-metadata">

**Author:** ![rwenderlich](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/rwenderlich/32/108604_2.png) [@rwenderlich](https://forums.kodeco.com/u/rwenderlich)\
**Post date:** [December 3, 2016, 4:54pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/9 "2016-12-03T16:54:20Z")

</div>

@alexhedley @keyner Thanks guys! :]

---

<div class="post-metadata">

**Author:** ![alexhedley](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/alexhedley/32/85744_2.png) [@alexhedley](https://forums.kodeco.com/u/alexhedley)\
**Post date:** [December 12, 2016, 11:25am UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/10 "2016-12-12T11:25:54Z")

</div>

Another app made with vapor

[http://www.nsregularexpression.com/](http://www.nsregularexpression.com/)

Code is on GitHub to see how it’s done

> **[GitHub - wojteklu/nsregularexpression.com: \[DEPRECATED\] Swift-based regular...](https://github.com/wojteklu/nsregularexpression.com)**
>
> \[DEPRECATED\] Swift-based regular expression editor - GitHub - wojteklu/nsregularexpression.com: \[DEPRECATED\] Swift-based regular expression editor

---

<div class="post-metadata">

**Author:** ![rwenderlich](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/rwenderlich/32/108604_2.png) [@rwenderlich](https://forums.kodeco.com/u/rwenderlich)\
**Post date:** [December 12, 2016, 9:39pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/11 "2016-12-12T21:39:32Z")

</div>

Cool, thanks for pointing this out @alexhedley!

---

<div class="post-metadata">

**Author:** ![anandk](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/anandk/32/53287_2.png) [@anandk](https://forums.kodeco.com/u/anandk)\
**Post date:** [December 15, 2016, 12:40pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/12 "2016-12-15T12:40:46Z")

</div>

How can we return different Response for different consumers in controller class, like I want to return below response for web-site

```
        return Response(redirect: "/v1/student")

```

and different response for mobile apps like below

```
        return try JSON(node: [
            "error" : false,
            "message" : "Student added successfully"
            ])

```

I am not getting how to achieve this.

---

<div class="post-metadata">

**Author:** ![chwang](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/chwang/32/81494_2.png) [@chwang](https://forums.kodeco.com/u/chwang)\
**Post date:** [December 23, 2016, 1:48am UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/13 "2016-12-23T01:48:59Z")

</div>

Hi, did anyone come across this error when playing the video “The media could not be loaded, either because the server or network failed or because the format is not supported.”? I tried both Chrome and Safari.

---

<div class="post-metadata">

**Author:** ![rwenderlich](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/rwenderlich/32/108604_2.png) [@rwenderlich](https://forums.kodeco.com/u/rwenderlich)\
**Post date:** [December 23, 2016, 7:01pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/14 "2016-12-23T19:01:46Z")

</div>

@chwang I just tried and it’s loading OK for me, and haven’t heard of anyone else w/ issues. Maybe check your connection?

---

<div class="post-metadata">

**Author:** ![chwang](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/chwang/32/81494_2.png) [@chwang](https://forums.kodeco.com/u/chwang)\
**Post date:** [December 28, 2016, 4:39am UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/15 "2016-12-28T04:39:59Z")

</div>

@rwenderlich you are right, it was my connection issue, thanks!

---

<div class="post-metadata">

**Author:** ![rebuut](https://assets.chunter.kodeco.com/user_avatar/forums.kodeco.com/rebuut/32/67211_2.png) [@rebuut](https://forums.kodeco.com/u/rebuut)\
**Post date:** [March 27, 2017, 6:05pm UTC](https://forums.kodeco.com/t/server-side-swift-with-vapor-making-a-web-app-ray-wenderlich/23572/16 "2017-03-27T18:05:06Z")

</div>

@rwenderlich  
Great series. Can we possibly organize the videos into a playlist so we can follow them in the right order.
