If you always want to return 200 as HTTP response whatever the request is, then you could have:
HandleHttpRequest directly linked to HandleHttpResponse with property status code to 200, and HandleHttpRequest linked to your flow to perform the expected tasks.
Now let's say that you want to return a response based on the request, then you can set processors between the HandleHttpRequest and the HandleHttpResponse and then use the expression language to set the response code to the value contained by an attribute of the flow file based on the previous processors. Note that the content of the flow file will be used as content of the HTTP response.
One example could be to expose a web service to retrieve files from HDFS (a bit like WebHDFS): the user sends a request with the path of the file to retrieve, then you link HandleHttpRequest to a FetchHDFS processor, then if the file exists (success relationship) you can link to a HandleHttpResponse with code 200 and the user will be able to get the file from HDFS, and if the file does not exist (or if there is any kind of issue, failure relationship), you can link the FetchHDFS to a HandleHttpResponse with an error code 4xx. Obviously you could add some complexity to your workflow: you could also allow users to send data to HDFS, etc, etc.
Hope this clarify a bit.